#ifndef _FONT_MANAGER_H
#define _FONT_MANAGER_H

//  #include <disp_manager.h>  与disp_manager.h 产生交叉引用
#include <common.h>

//用来描述一个文字的位图
//freetype（w就显示的比较宽，1就显示的比较窄）
typedef struct FontBitMap {
	//第一版的写法
	//int iLeftUpX;//左上
	//int iLeftUpY;
	//int iWidth;//宽
	//int iRows;//行
	Region tRegion; //第二版
	int iCurOriginX; //当前这个基点的x坐标和y坐标。
	int iCurOriginY;
	int iNextOriginX;
	int iNextOriginY;
	unsigned char *pucBuffer;//位图
}FontBitMap, *PFontBitMap;  

//字库的操作结构体
typedef struct FontOpr {
	char *name;//识别显示字符的方法
	int (*FontInit)(char *aFineName);//赋给初始化函数的是：哪个字体文件
	int (*SetFontSize)(int iFontSize);//字体大小
	//获得字符的点阵，dwCode是字符的编码值，得到数据后放入ptFontBitMap中
	int (*GetFontBitMap)(unsigned int dwCode, PFontBitMap ptFontBitMap);
	int (*GetStringRegionCar)(char *str, PRegionCartesian ptRegionCar);
	struct FontOpr *ptNext; //要让程序支持多种文件，这里加一个链表指针
}FontOpr, *PFontOpr;

void RegisterFont(PFontOpr ptFontOpr);
void FontSystemRegister(void);
int SelectAndInitFont(char *aFontOprName, char *aFontFileName);
int SetFontSize(int iFontSize);
int GetFontBitMap(unsigned int dwCode, PFontBitMap ptFontBitMap);
int GetStringRegionCar(char *str, PRegionCartesian ptRegionCar);


#endif




